<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // 1. js里面有哪些数据类型？ ----  8种
      // 自己先去 掘金网站  bing网站  google.com   自己先把题目拿过去搜索一下。多看几篇文章，在总结了自己记忆
      // 前端最新的知识点（最新的es6(es2015) es2024）--- 最新的知识点在官网里面会有 https://developer.mozilla.org/
      // 官网知识不方便阅读， 一般结合国内的网站例如  掘金 CSDN  思否 看别人总结的博客来学习

      // 前端总共有8种数据类型
      // 7中基本数据类型 +  1种复杂数据类型object
      // 基础类型  string  + boolean + number + null  + undefined  + Symbol  + Bigint

      // Bigint： 在js里面 最大的数字只能表示到 2的53次方---打印的话 Math.pow(2, 53) ----  工作里面如果写vue或者react等项目的时候，后端返回超过这个数字的数字，前端就需要下一个包  npm install json-bigint
      // Symbol:  表示唯一值， Symbol()调用 就会生成一个全局的唯一值，不可能和其他值重复

      // 1种复杂数据类型 Object ---- {}  []  function fn() {}  new Date()  /^\d$/

      // 2. 在js里面怎么样判断数据类型？
      // 我了解的大概有三种，工作里面只用一种
      // typeof  instanceof  Object.prototype.toString.call()
      console.log(typeof 1);
      console.log(typeof 'abc');
      console.log(typeof true);
      console.log(typeof {});
      console.log(typeof []);
      console.log(typeof null);
      // instanceof 是我们在学习原型链的时候，顺带的一个方法
      console.log(1 instanceof Number);
      console.log([] instanceof Array);
      console.log([] instanceof Object);
      console.log({} instanceof Object);
      // Object原型链上的toString方法 --- 工作里面都用的方法 -- 返回值是字符串，格式是 一个中括号，第一个字符串是obejct 第二个字符串是要判断数据的 构造函数
      function fn() {}
      const p1 = new Date();
      const p2 = /^\d$/;
      console.log(Object.prototype.toString.call(1)); // [object Number]
      console.log(Object.prototype.toString.call('abc')); // [object String]
      console.log(Object.prototype.toString.call(true)); // [object Boolean]
      console.log(Object.prototype.toString.call(null));
      console.log(Object.prototype.toString.call(undefined));
      console.log(Object.prototype.toString.call({})); // [object Object]
      console.log(Object.prototype.toString.call([])); // [object Array]
      console.log(Object.prototype.toString.call(fn)); // [object Function]
      console.log(Object.prototype.toString.call(p1)); // [object Date]
      console.log(Object.prototype.toString.call(p2)); // [object RegExp]

      function fn32() {
        if (Object.prototype.toString.call(1) === '[object Number]') {
          console.log('这个分支就是数字的逻辑， 这里就叫做用程序去判断js里面所有的类型');
        } else if (Object.prototype.toString.call(1) === '[object String]') {
        }
      }
    </script>
  </body>
</html>
